package hu.veilingsite.gui;

import hu.veilingsite.client.Service;
import hu.veilingsite.client.ServiceAsync;
import hu.veilingsite.client.Systeem;
import hu.veilingsite.client.Veilingsite;
import hu.veilingsite.shared.ClientUser;
import hu.veilingsite.shared.FieldVerifier;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;

public class CreditsKopen {
	public Label text, message, uitleg;
	public TextBox code;
	public Button valideer;
	final ServiceAsync myService = (ServiceAsync)
	GWT.create(Service.class);

	public CreditsKopen(){
	} 

	final AsyncCallback<Integer> callback = new AsyncCallback<Integer>(){

		@Override
		public void onFailure(Throwable caught) {
			FieldVerifier.showMessageBox("Oops", "Er is iets fout gegaan op de server..", true);
		}

		@Override
		public void onSuccess(Integer result) {
			if(result != 0){
				message.setText("uw coupon is goedgekeurd en de credits zijn bijgeschreven");
				myService.getUser(Systeem.ingelogd.getEmail(), getUser);
			}
			else{
				message.setText("uw coupon bestaat niet of is al eerder gebruikt");
			}
		}
	};

	final AsyncCallback<ClientUser> getUser = new AsyncCallback<ClientUser>(){

		@Override
		public void onFailure(Throwable caught) {
			FieldVerifier.showMessageBox("Oops", "Uw credits zijn niet goed geupdate. log opnieuw in om dit recht te zetten", true);
		}

		@Override
		public void onSuccess(ClientUser result) {
			Systeem.ingelogd = result;
		}
	};

	public Panel createPage(){
		if(Systeem.ingelogd == null){
			Window.alert("U moet ingelogt zijn om hier te komen");
			return new Veilingsite().createHome();
		}
		else{

			//maak de layoutonderdelen aan
			HorizontalPanel p = new HorizontalPanel();
			FlexTable table = new FlexTable();

			//maak de onderdelen van de pagina aan
			message = new Label("");
			text = new Label("voer hier uw couponcode in:");
			code = new TextBox();
			valideer = new Button("krijg credits");
			uitleg = new Label("als u een coupon wil kopen moet u mailen of bellen naar de admin");

			//de actie die de knop uitvoerd
			valideer.addClickHandler(new ClickHandler(){
				public void onClick(ClickEvent event) {
					myService.valCoupon(code.getText(), Systeem.ingelogd, callback);
				}
			});

			//alles netjes op het panel plaatsen
			table.setWidget(0,0,text);
			table.setWidget(0,1,code);
			table.setWidget(1,0,valideer);
			table.setWidget(2,0,uitleg);
			table.setWidget(3,0,message);
			p.add(table);

			return p;
		}
	}
}
